1 Introduction

The following analysis looks at the combined data set created that includes information from income per person, life expectancy, countries total, and population information. This analysis looks only at the values in the year 2015 and an interactive scatter plot was created to show the relationship between life expectancy and income, as well as give some additional information on each point in the plot.

2 Data Preparation

Importing the data:

completed_data<-read.csv(url("https://melaniemiller1.github.io/STA533/w05-HW/final_data.csv"))

Subsetting the data to only the year 2015:

data2015 <- completed_data %>%
             filter(Year == 2015)

3 Interactive Scatter Plot of Expectancy vs Income

plot_ly(
    data = data2015,
    x = ~Expectancy,  # Horizontal axis 
    y = ~Income,   # Vertical axis 
    color = ~factor(region),  # must be a numeric factor
    text = ~paste("Population: ", Population,
                   "<br>Country: ", region), 
     ## using the following hovertemplate() to add the information of the
     ## Two numerical variables to the hover text.
     ### Use the following hover template to display more information
     hovertemplate = paste('<b>%{text}</b>'),
     alpha  = 0.6,
     marker = list(size = ~Population/30000000, sizeref = .05, sizemode = 'area' ),
     type = "scatter",
     mode = "markers",
     ## graphic size
     width = 700,
     height = 500
   ) %>%
    layout(  
      ### Title 
      title =list(text = "Income vs Life Expectancy", 
                  font = list(family = "Times New Roman",  # HTML font family  
                                size = 18,
                               color = "black")), 
      ### legend
      legend = list(title = list(text = "Region",
                                 font = list(family = "Courier New",
                                               size = 14,
                                              color = "green")),
                    bgcolor = "ivory",
                    groupclick = "togglegroup",  # one of  "toggleitem" AND "togglegroup".
                    orientation = "v"  # Sets the orientation of the legend.
                    ),
      ## margin of the plot
      margin = list(
              b = 100,
              l = 100,
              t = 100,
              r = 50
      ),
      ## Background
      plot_bgcolor ='#f7f7f7', 
      ## Axes labels
             xaxis = list( 
                    title=list(text = "Expectancy",
                               font = list(family = 'Arial')),
                    zerolinewidth = 2, 
                    gridcolor = 'white'), 
            yaxis = list( 
                    title=list(text = "Income",
                               font = list(family = 'Arial')),
                    zerolinewidth = 2, 
                    gridcolor = 'white')

    )

This plot shows the relationship between expectancy and income. The size of the points are reflective of the population size, and the colors correspond to the different countries. Hovering over each point you will be able to see the country and the population size.Trends show that as expectancy increases, so does income.

4 Animated Scatter Plot (optional)

pal.IBM <- c("#332288", "#117733", "#0072B2","#D55E00", "#882255")
pal.IBM <- setNames(pal.IBM, c("Asia", "Europe", "Africa", "Americas", "Oceania"))

df <- completed_data 
fig <- df %>%
  plot_ly(
    x = ~Expectancy, 
    y = ~Income, 
    size = ~Population,
    color = ~region, 
    colors = pal.IBM,   # custom colors
    #marker = list(size = ~(log(pop)-10),  sizemode = 'area'),
    frame = ~Year,      # the time variable to
    # to display in the hover
    text = ~paste("Country:", region,
                  "<br>Pop:", Population),
    hoverinfo = "text",
    type = 'scatter',
    mode = 'markers'
  )%>%
    layout(  
      ### Title 
      title =list(text = "Income vs Life Expectancy", 
                  font = list(family = "Times New Roman",  # HTML font family  
                                size = 18,
                               color = "black")), 
      ### legend
      legend = list(title = list(text = "Region",
                                 font = list(family = "Courier New",
                                               size = 14,
                                              color = "green")),
                    bgcolor = "ivory",
                    groupclick = "togglegroup",  # one of  "toggleitem" AND "togglegroup".
                    orientation = "v"  # Sets the orientation of the legend.
                    ),
           ## Background
      plot_bgcolor ='#f7f7f7', 
      ## Axes labels
             xaxis = list( 
                    title=list(text = "Expectancy",
                               font = list(family = 'Arial')),
                    zerolinewidth = 2, 
                    gridcolor = 'white'), 
            yaxis = list( 
                    title=list(text = "Income",
                               font = list(family = 'Arial')),
                    zerolinewidth = 2, 
                    gridcolor = 'white'))

fig

This animated plot shows the changes of the relationship bewteen income and life expectancy over time. This plot shows the trend of as the years go by, life expectancy eventually begins to increase, as well as income.

LS0tDQp0aXRsZTogIlNUQSA1MzMgSG9tZXdvcmsgNiINCmF1dGhvcjogIk1lbGFuaWUgTWlsbGVyIg0KZGF0ZTogIldlc3QgQ2hlc3RlciBVbml2ZXJzaXR5Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlDQogICAgdGhlbWU6IGx1bWVuDQplZGl0b3Jfb3B0aW9uczoNCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQ0KLS0tDQoNCg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCg0KLyogVGFibGUgb2YgY29udGVudCAtIG5hdmlnYXRpb24gKi8NCmRpdiNUT0MgbGkgew0KICAgIGxpc3Qtc3R5bGU6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Z3JheTsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQogICAgY29sb3I6ICM3ODBjMGM7DQp9DQoNCg0KLyogVGl0bGUgZm9udHMgKi8NCmgxLnRpdGxlIHsNCiAgZm9udC1zaXplOiAyNHB4Ow0KICBjb2xvcjogZGFya2JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQogIGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7DQp9DQpoNC5hdXRob3IgeyANCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgY29sb3I6IG5hdnk7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCmg0LmRhdGUgeyANCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgY29sb3I6IGRhcmtibHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCi8qIFNlY3Rpb24gaGVhZGVycyAqLw0KaDEgew0KICAgIGZvbnQtc2l6ZTogMjJweDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMiB7DQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgzIHsgDQogICAgZm9udC1zaXplOiAxNXB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmg0IHsNCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCjwvc3R5bGU+DQoNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQojIGNvZGUgY2h1bmsgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIFIgY29kZSwgd2FybmluZ3MsIGFuZCBvdXRwdXQgDQojIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dCBmaWxlcy4NCmlmICghcmVxdWlyZSgidGlkeXZlcnNlIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpDQogICBsaWJyYXJ5KHRpZHl2ZXJzZSkNCn0NCmlmICghcmVxdWlyZSgia25pdHIiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygia25pdHIiKQ0KICAgbGlicmFyeShrbml0cikNCn0NCmlmICghcmVxdWlyZSgianBlZyIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJqcGVnIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgIGxpYnJhcnkoanBlZykNCn0NCg0KaWYgKCFyZXF1aXJlKCJSQ3VybCIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJSQ3VybCIsIGRlcGVuZGVuY2llcyA9IFRSVUUpDQogICBsaWJyYXJ5KFJDdXJsKQ0KfQ0KDQppZiAoIXJlcXVpcmUoInBsb3RseSIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQ0KICAgbGlicmFyeShwbG90bHkpDQp9DQoNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCAgIA0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRSVUUsICAgDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBOQSkNCmBgYA0KDQojIEludHJvZHVjdGlvbg0KVGhlIGZvbGxvd2luZyBhbmFseXNpcyBsb29rcyBhdCB0aGUgY29tYmluZWQgZGF0YSBzZXQgY3JlYXRlZCB0aGF0IGluY2x1ZGVzIGluZm9ybWF0aW9uIGZyb20gaW5jb21lIHBlciBwZXJzb24sIGxpZmUgZXhwZWN0YW5jeSwgY291bnRyaWVzIHRvdGFsLCBhbmQgcG9wdWxhdGlvbiBpbmZvcm1hdGlvbi4gVGhpcyBhbmFseXNpcyBsb29rcyBvbmx5IGF0IHRoZSB2YWx1ZXMgaW4gdGhlIHllYXIgMjAxNSBhbmQgYW4gaW50ZXJhY3RpdmUgc2NhdHRlciBwbG90IHdhcyBjcmVhdGVkIHRvIHNob3cgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGxpZmUgZXhwZWN0YW5jeSBhbmQgaW5jb21lLCBhcyB3ZWxsIGFzIGdpdmUgc29tZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGVhY2ggcG9pbnQgaW4gdGhlIHBsb3QuIA0KDQoNCiMgRGF0YSBQcmVwYXJhdGlvbg0KDQpJbXBvcnRpbmcgdGhlIGRhdGE6DQpgYGB7ciBEYXRhIEltcG9ydH0NCmNvbXBsZXRlZF9kYXRhPC1yZWFkLmNzdih1cmwoImh0dHBzOi8vbWVsYW5pZW1pbGxlcjEuZ2l0aHViLmlvL1NUQTUzMy93MDUtSFcvZmluYWxfZGF0YS5jc3YiKSkNCmBgYA0KDQoNClN1YnNldHRpbmcgdGhlIGRhdGEgdG8gb25seSB0aGUgeWVhciAyMDE1Og0KYGBge3J9DQpkYXRhMjAxNSA8LSBjb21wbGV0ZWRfZGF0YSAlPiUNCiAgICAgICAgICAgICBmaWx0ZXIoWWVhciA9PSAyMDE1KQ0KYGBgDQoNCg0KIyBJbnRlcmFjdGl2ZSBTY2F0dGVyIFBsb3Qgb2YgRXhwZWN0YW5jeSB2cyBJbmNvbWUNCg0KYGBge3J9DQpwbG90X2x5KA0KICAgIGRhdGEgPSBkYXRhMjAxNSwNCiAgICB4ID0gfkV4cGVjdGFuY3ksICAjIEhvcml6b250YWwgYXhpcyANCiAgICB5ID0gfkluY29tZSwgICAjIFZlcnRpY2FsIGF4aXMgDQogICAgY29sb3IgPSB+ZmFjdG9yKHJlZ2lvbiksICAjIG11c3QgYmUgYSBudW1lcmljIGZhY3Rvcg0KICAgIHRleHQgPSB+cGFzdGUoIlBvcHVsYXRpb246ICIsIFBvcHVsYXRpb24sDQogICAgICAgICAgICAgICAgICAgIjxicj5Db3VudHJ5OiAiLCByZWdpb24pLCANCiAgICAgIyMgdXNpbmcgdGhlIGZvbGxvd2luZyBob3ZlcnRlbXBsYXRlKCkgdG8gYWRkIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUNCiAgICAgIyMgVHdvIG51bWVyaWNhbCB2YXJpYWJsZXMgdG8gdGhlIGhvdmVyIHRleHQuDQogICAgICMjIyBVc2UgdGhlIGZvbGxvd2luZyBob3ZlciB0ZW1wbGF0ZSB0byBkaXNwbGF5IG1vcmUgaW5mb3JtYXRpb24NCiAgICAgaG92ZXJ0ZW1wbGF0ZSA9IHBhc3RlKCc8Yj4le3RleHR9PC9iPicpLA0KICAgICBhbHBoYSAgPSAwLjYsDQogICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IH5Qb3B1bGF0aW9uLzMwMDAwMDAwLCBzaXplcmVmID0gLjA1LCBzaXplbW9kZSA9ICdhcmVhJyApLA0KICAgICB0eXBlID0gInNjYXR0ZXIiLA0KICAgICBtb2RlID0gIm1hcmtlcnMiLA0KICAgICAjIyBncmFwaGljIHNpemUNCiAgICAgd2lkdGggPSA3MDAsDQogICAgIGhlaWdodCA9IDUwMA0KICAgKSAlPiUNCiAgICBsYXlvdXQoICANCiAgICAgICMjIyBUaXRsZSANCiAgICAgIHRpdGxlID1saXN0KHRleHQgPSAiSW5jb21lIHZzIExpZmUgRXhwZWN0YW5jeSIsIA0KICAgICAgICAgICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gIlRpbWVzIE5ldyBSb21hbiIsICAjIEhUTUwgZm9udCBmYW1pbHkgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMTgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siKSksIA0KICAgICAgIyMjIGxlZ2VuZA0KICAgICAgbGVnZW5kID0gbGlzdCh0aXRsZSA9IGxpc3QodGV4dCA9ICJSZWdpb24iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gIkNvdXJpZXIgTmV3IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDE0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gImdyZWVuIikpLA0KICAgICAgICAgICAgICAgICAgICBiZ2NvbG9yID0gIml2b3J5IiwNCiAgICAgICAgICAgICAgICAgICAgZ3JvdXBjbGljayA9ICJ0b2dnbGVncm91cCIsICAjIG9uZSBvZiAgInRvZ2dsZWl0ZW0iIEFORCAidG9nZ2xlZ3JvdXAiLg0KICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbiA9ICJ2IiAgIyBTZXRzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgbGVnZW5kLg0KICAgICAgICAgICAgICAgICAgICApLA0KICAgICAgIyMgbWFyZ2luIG9mIHRoZSBwbG90DQogICAgICBtYXJnaW4gPSBsaXN0KA0KICAgICAgICAgICAgICBiID0gMTAwLA0KICAgICAgICAgICAgICBsID0gMTAwLA0KICAgICAgICAgICAgICB0ID0gMTAwLA0KICAgICAgICAgICAgICByID0gNTANCiAgICAgICksDQogICAgICAjIyBCYWNrZ3JvdW5kDQogICAgICBwbG90X2JnY29sb3IgPScjZjdmN2Y3JywgDQogICAgICAjIyBBeGVzIGxhYmVscw0KICAgICAgICAgICAgIHhheGlzID0gbGlzdCggDQogICAgICAgICAgICAgICAgICAgIHRpdGxlPWxpc3QodGV4dCA9ICJFeHBlY3RhbmN5IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250ID0gbGlzdChmYW1pbHkgPSAnQXJpYWwnKSksDQogICAgICAgICAgICAgICAgICAgIHplcm9saW5ld2lkdGggPSAyLCANCiAgICAgICAgICAgICAgICAgICAgZ3JpZGNvbG9yID0gJ3doaXRlJyksIA0KICAgICAgICAgICAgeWF4aXMgPSBsaXN0KCANCiAgICAgICAgICAgICAgICAgICAgdGl0bGU9bGlzdCh0ZXh0ID0gIkluY29tZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gJ0FyaWFsJykpLA0KICAgICAgICAgICAgICAgICAgICB6ZXJvbGluZXdpZHRoID0gMiwgDQogICAgICAgICAgICAgICAgICAgIGdyaWRjb2xvciA9ICd3aGl0ZScpDQoNCiAgICApDQoNCmBgYA0KDQoNClRoaXMgcGxvdCBzaG93cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gZXhwZWN0YW5jeSBhbmQgaW5jb21lLiBUaGUgc2l6ZSBvZiB0aGUgcG9pbnRzIGFyZSByZWZsZWN0aXZlIG9mIHRoZSBwb3B1bGF0aW9uIHNpemUsIGFuZCB0aGUgY29sb3JzIGNvcnJlc3BvbmQgdG8gdGhlIGRpZmZlcmVudCBjb3VudHJpZXMuIEhvdmVyaW5nIG92ZXIgZWFjaCBwb2ludCB5b3Ugd2lsbCBiZSBhYmxlIHRvIHNlZSB0aGUgY291bnRyeSBhbmQgdGhlIHBvcHVsYXRpb24gc2l6ZS5UcmVuZHMgc2hvdyB0aGF0IGFzIGV4cGVjdGFuY3kgaW5jcmVhc2VzLCBzbyBkb2VzIGluY29tZS4gDQoNCg0KIyBBbmltYXRlZCBTY2F0dGVyIFBsb3QgKG9wdGlvbmFsKQ0KYGBge3J9DQpwYWwuSUJNIDwtIGMoIiMzMzIyODgiLCAiIzExNzczMyIsICIjMDA3MkIyIiwiI0Q1NUUwMCIsICIjODgyMjU1IikNCnBhbC5JQk0gPC0gc2V0TmFtZXMocGFsLklCTSwgYygiQXNpYSIsICJFdXJvcGUiLCAiQWZyaWNhIiwgIkFtZXJpY2FzIiwgIk9jZWFuaWEiKSkNCg0KZGYgPC0gY29tcGxldGVkX2RhdGEgDQpmaWcgPC0gZGYgJT4lDQogIHBsb3RfbHkoDQogICAgeCA9IH5FeHBlY3RhbmN5LCANCiAgICB5ID0gfkluY29tZSwgDQogICAgc2l6ZSA9IH5Qb3B1bGF0aW9uLA0KICAgIGNvbG9yID0gfnJlZ2lvbiwgDQogICAgY29sb3JzID0gcGFsLklCTSwgICAjIGN1c3RvbSBjb2xvcnMNCiAgICAjbWFya2VyID0gbGlzdChzaXplID0gfihsb2cocG9wKS0xMCksICBzaXplbW9kZSA9ICdhcmVhJyksDQogICAgZnJhbWUgPSB+WWVhciwgICAgICAjIHRoZSB0aW1lIHZhcmlhYmxlIHRvDQogICAgIyB0byBkaXNwbGF5IGluIHRoZSBob3Zlcg0KICAgIHRleHQgPSB+cGFzdGUoIkNvdW50cnk6IiwgcmVnaW9uLA0KICAgICAgICAgICAgICAgICAgIjxicj5Qb3A6IiwgUG9wdWxhdGlvbiksDQogICAgaG92ZXJpbmZvID0gInRleHQiLA0KICAgIHR5cGUgPSAnc2NhdHRlcicsDQogICAgbW9kZSA9ICdtYXJrZXJzJw0KICApJT4lDQogICAgbGF5b3V0KCAgDQogICAgICAjIyMgVGl0bGUgDQogICAgICB0aXRsZSA9bGlzdCh0ZXh0ID0gIkluY29tZSB2cyBMaWZlIEV4cGVjdGFuY3kiLCANCiAgICAgICAgICAgICAgICAgIGZvbnQgPSBsaXN0KGZhbWlseSA9ICJUaW1lcyBOZXcgUm9tYW4iLCAgIyBIVE1MIGZvbnQgZmFtaWx5ICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDE4LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIikpLCANCiAgICAgICMjIyBsZWdlbmQNCiAgICAgIGxlZ2VuZCA9IGxpc3QodGl0bGUgPSBsaXN0KHRleHQgPSAiUmVnaW9uIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgPSBsaXN0KGZhbWlseSA9ICJDb3VyaWVyIE5ldyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAxNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICJncmVlbiIpKSwNCiAgICAgICAgICAgICAgICAgICAgYmdjb2xvciA9ICJpdm9yeSIsDQogICAgICAgICAgICAgICAgICAgIGdyb3VwY2xpY2sgPSAidG9nZ2xlZ3JvdXAiLCAgIyBvbmUgb2YgICJ0b2dnbGVpdGVtIiBBTkQgInRvZ2dsZWdyb3VwIi4NCiAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb24gPSAidiIgICMgU2V0cyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGxlZ2VuZC4NCiAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgIyMgQmFja2dyb3VuZA0KICAgICAgcGxvdF9iZ2NvbG9yID0nI2Y3ZjdmNycsIA0KICAgICAgIyMgQXhlcyBsYWJlbHMNCiAgICAgICAgICAgICB4YXhpcyA9IGxpc3QoIA0KICAgICAgICAgICAgICAgICAgICB0aXRsZT1saXN0KHRleHQgPSAiRXhwZWN0YW5jeSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gJ0FyaWFsJykpLA0KICAgICAgICAgICAgICAgICAgICB6ZXJvbGluZXdpZHRoID0gMiwgDQogICAgICAgICAgICAgICAgICAgIGdyaWRjb2xvciA9ICd3aGl0ZScpLCANCiAgICAgICAgICAgIHlheGlzID0gbGlzdCggDQogICAgICAgICAgICAgICAgICAgIHRpdGxlPWxpc3QodGV4dCA9ICJJbmNvbWUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgPSBsaXN0KGZhbWlseSA9ICdBcmlhbCcpKSwNCiAgICAgICAgICAgICAgICAgICAgemVyb2xpbmV3aWR0aCA9IDIsIA0KICAgICAgICAgICAgICAgICAgICBncmlkY29sb3IgPSAnd2hpdGUnKSkNCg0KZmlnDQpgYGANCg0KVGhpcyBhbmltYXRlZCBwbG90IHNob3dzIHRoZSBjaGFuZ2VzIG9mIHRoZSByZWxhdGlvbnNoaXAgYmV3dGVlbiBpbmNvbWUgYW5kIGxpZmUgZXhwZWN0YW5jeSBvdmVyIHRpbWUuIFRoaXMgcGxvdCBzaG93cyB0aGUgdHJlbmQgb2YgYXMgdGhlIHllYXJzIGdvIGJ5LCBsaWZlIGV4cGVjdGFuY3kgZXZlbnR1YWxseSBiZWdpbnMgdG8gaW5jcmVhc2UsIGFzIHdlbGwgYXMgaW5jb21lLiA=